package cn.iocoder.yudao.module.vote.service.voteconfig;

import java.util.*;
import javax.validation.*;
import cn.iocoder.yudao.module.vote.controller.admin.voteconfig.vo.*;
import cn.iocoder.yudao.module.vote.dal.dataobject.voteconfig.VoteConfigDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;

/**
 * 优秀最大比例配置信息 Service 接口
 *
 * @author moving
 */
public interface VoteConfigService {

    /**
     * 创建优秀最大比例配置信息
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createConfig(@Valid VoteConfigCreateReqVO createReqVO);

    /**
     * 更新优秀最大比例配置信息
     *
     * @param updateReqVO 更新信息
     */
    void updateConfig(@Valid VoteConfigUpdateReqVO updateReqVO);

    /**
     * 删除优秀最大比例配置信息
     *
     * @param id 编号
     */
    void deleteConfig(Long id);

    /**
     * 获得优秀最大比例配置信息
     *
     * @param id 编号
     * @return 优秀最大比例配置信息
     */
    VoteConfigDO getConfig(Long id);

    /**
     * 获得优秀最大比例配置信息列表
     *
     * @param ids 编号
     * @return 优秀最大比例配置信息列表
     */
    List<VoteConfigDO> getConfigList(Collection<Long> ids);

    /**
     * 获得优秀最大比例配置信息分页
     *
     * @param pageReqVO 分页查询
     * @return 优秀最大比例配置信息分页
     */
    PageResult<VoteConfigDO> getConfigPage(VoteConfigPageReqVO pageReqVO);

    /**
     * 获得优秀最大比例配置信息列表, 用于 Excel 导出
     *
     * @param exportReqVO 查询条件
     * @return 优秀最大比例配置信息列表
     */
    List<VoteConfigDO> getConfigList(VoteConfigExportReqVO exportReqVO);


    /**
     * 通过voteid获取配置信息
     * @param voteId
     * @return
     */
    VoteConfigDO selectByVoteId(Integer voteId);
}
